package com.example.system.service;

import com.example.system.entity.DTO.ExamAddDTO;
import com.example.system.entity.DTO.ExamEditDTO;
import com.example.system.entity.DTO.ExamQueryDTO;
import com.example.system.entity.DTO.ExamQuestAddDTO;
import com.example.system.entity.VO.ExamDetailVO;
import com.example.system.entity.VO.ExamVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface IExamService {
    /**
     * 获取竞赛列表
     * @param examQueryDTO examQueryDTO
     * @return List<ExamVO>
     */
    List<ExamVO> list(ExamQueryDTO examQueryDTO);

    /**
     * 添加竞赛
     * @param examAddDTO examAddDTO
     * @return exam_id
     */
    String add(ExamAddDTO examAddDTO);

    /**
     * 向竞赛中添加题目
     * @param examQuestAddDTO examQuestAddDTO
     * @return true:成功 false:失败
     */
    boolean questionAdd(ExamQuestAddDTO examQuestAddDTO);

    /**
     * 获取竞赛详情
     * @param examId examId
     * @return ExamDetailVO
     */
    ExamDetailVO detail(Long examId);


    /**
     * 编辑竞赛
     * @param examEditDTO examEditDTO
     * @return 1.成功 0.失败
     */
    int edit(ExamEditDTO examEditDTO);

    /**
     * 从竞赛中删除题目
     * @param examId examId
     * @param questionId questionId
     * @return 1.成功 0.失败
     */
    int questionDelete(Long examId, Long questionId);

    /**
     * 删除竞赛
     * @param examId examId
     * @return 1.成功 2.失败
     */
    int delete(Long examId);

    /**
     * 发布竞赛
     * @param examId examId
     * @return 1.成功 0.失败
     */
    int publish(Long examId);

    /**
     * 撤销发布
     * @param examId examId
     * @return 1.成功 0.失败
     */
    int cancelPublish(Long examId);
}
